/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.tesoreria.beans;

import java.util.EventListener;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import org.cip.esymons.colegiatura.be.Colegiado;
import org.cip.esymons.general.bc.ColegiadoEspecialidadFacadeLocal;
import org.cip.esymons.general.bc.DireccionPersonaFacadeLocal;
import org.cip.esymons.general.bc.IgvFacadeLocal;
import org.cip.esymons.general.bc.PersonaJuridicaFacadeLocal;
import org.cip.esymons.general.bc.PersonaNaturalFacadeLocal;
import org.cip.esymons.general.be.Departamento;
import org.cip.esymons.general.be.DireccionPersona;
import org.cip.esymons.general.be.Distrito;
import org.cip.esymons.general.be.PersonaJuridica;
import org.cip.esymons.general.be.PersonaNatural;
import org.cip.esymons.general.be.Provincia;
import org.cip.esymons.general.be.Solicitante;
import org.cip.esymons.general.be.TipoZona;
import org.cip.esymons.general.util.ControladorAbstracto;
import org.cip.esymons.tesoreria.adapters.CuotasPorAnio;
import org.cip.esymons.tesoreria.adapters.VerDeuda;
import org.cip.esymons.tesoreria.bc.CierreCajaDelegate;
import org.cip.esymons.tesoreria.bc.EjecutarPagoLocal;
import org.cip.esymons.tesoreria.bc.SerieDocPagoFacadeLocal;
import org.cip.esymons.tesoreria.bc.ValorCuentaDelegate;
import org.cip.esymons.tesoreria.be.BeneficiarioPagocolegiatura;
import org.cip.esymons.tesoreria.be.DetPagoAgrupado;
import org.cip.esymons.tesoreria.be.DocumentoPago;
import org.cip.esymons.tesoreria.be.EnumEstadoDocumentoPago;
import org.cip.esymons.tesoreria.be.MovimientoCuenta;
import org.cip.esymons.tramite.be.TipoDocumento;

/**
 *
 * @author Gilmar Montoya
 */
public class EjecutarPagoController extends ControladorAbstracto {

    @EJB
    EjecutarPagoLocal delegado;
    @EJB
    SerieDocPagoFacadeLocal serieDocPagoFacadeLocal;
    @EJB
    DireccionPersonaFacadeLocal direccionPersonaFacadeLocal;
    @EJB
    PersonaNaturalFacadeLocal personaNaturalFacadeLocal;
    @EJB
    PersonaJuridicaFacadeLocal personaJuridicaFacadeLocal;
    @EJB
    IgvFacadeLocal igvFacadeLocal;
    @EJB
    ColegiadoEspecialidadFacadeLocal colegiadoEspecialidadFacadeLocal;
    private String dnioNroCip;
    private String dnioNroCipBene;
    private String nombreCuentaIngreso;
    private ValorCuentaDelegate delegadoValorCuenta;
    private CierreCajaDelegate delegadoCierreCaja;
    //agregado para seleccionar las cuotas de todo un año por checks
    private CuotasPorAnio cuotaPorAnio;
    private CuotasPorAnio cuotaPorAnioBene;
    //fin de agregado
    //CODIGO AGREGADO X INGRID PARA EDITAR DATOS D PERSONAS O EMPRESAS
    private Departamento departamentoPE;
    private Provincia provinciaPE;
    private Distrito distritoPE;
    private TipoZona tipoZonaPE;
    private String nombreZonaPE;
    private String direccionPE;
    private DireccionPersona direccionPersonaEmpresa;
    private boolean seleccionado = false;
    //FIN D CODIGO

    public EjecutarPagoController() {
        delegadoValorCuenta = new ValorCuentaDelegate();
        delegadoCierreCaja = new CierreCajaDelegate();

    }

    public String nuevo() {
        if (delegadoCierreCaja.cierreCajaACtual() != null) {
            delegado.init();
            return "nuevo";
        } else {
            ControladorAbstracto.warn("Primero debe habilitar Caja.");
            return "sinCaja";
        }
    }

    //agregado x Ingrid para actualizar los datos de una persona natural
    public String actualizarDatosPersonas() {
        PersonaNatural penat = delegado.getRealizarPago().getPersonaSeleccionada();
        personaNaturalFacadeLocal.edit(penat);
        direccionPersonaEmpresa = direccionPersonaFacadeLocal.buscaDireccionColegiado(penat.getSolCodigo());//metodo q busca tambien direcciones para empresas
        PersonaJuridicaController pjc = (PersonaJuridicaController) ControladorAbstracto.getBean("personaJuridicaController");
        direccionPersonaEmpresa.setDisCodigo(pjc.getDistrito());
        direccionPersonaEmpresa.setZonaCodigo(pjc.getTipoZona());
        direccionPersonaEmpresa.setDpenombreZona(pjc.getNombreZona());
        direccionPersonaEmpresa.setDpeDireccion(pjc.getDireccion());
        direccionPersonaFacadeLocal.edit(direccionPersonaEmpresa);
        getSolicitanteSeleccionado().getListaDirecciones().set(0, direccionPersonaEmpresa);
        ControladorAbstracto.info("Se actualizó Satisfactoriamente los datos de la Persona");
        return null;
    }
    //fin d agregado x ingrid

    //agregado x Ingrid para actualizar los datos de una persona natural
    public String actualizarDatosEmpresas() {
        PersonaJuridica empre = delegado.getRealizarPago().getEmpresaSeleccionada();
        personaJuridicaFacadeLocal.edit(empre);
        direccionPersonaEmpresa = direccionPersonaFacadeLocal.buscaDireccionColegiado(empre.getSolCodigo());//metodo q busca tambien direcciones para empresas
        PersonaJuridicaController pjc = (PersonaJuridicaController) ControladorAbstracto.getBean("personaJuridicaController");
        direccionPersonaEmpresa.setDisCodigo(pjc.getDistrito());
        direccionPersonaEmpresa.setZonaCodigo(pjc.getTipoZona());
        direccionPersonaEmpresa.setDpenombreZona(pjc.getNombreZona());
        direccionPersonaEmpresa.setDpeDireccion(pjc.getDireccion());
        direccionPersonaFacadeLocal.edit(direccionPersonaEmpresa);
        getSolicitanteSeleccionado().getListaDirecciones().set(0, direccionPersonaEmpresa);
        ControladorAbstracto.info("Se actualizó Satisfactoriamente los datos de la Empresa");
        return null;
    }
    //fin d agregado x ingrid

    public String seleccionarTodo() {
        cuotaPorAnio.getCuotaEnero().setSeleccionado(cuotaPorAnio.isSeleccionado());
        cuotaPorAnio.getCuotaFebrero().setSeleccionado(cuotaPorAnio.isSeleccionado());
        cuotaPorAnio.getCuotaMarzo().setSeleccionado(cuotaPorAnio.isSeleccionado());
        cuotaPorAnio.getCuotaAbril().setSeleccionado(cuotaPorAnio.isSeleccionado());
        cuotaPorAnio.getCuotaMayo().setSeleccionado(cuotaPorAnio.isSeleccionado());
        cuotaPorAnio.getCuotaJunio().setSeleccionado(cuotaPorAnio.isSeleccionado());
        cuotaPorAnio.getCuotaJulio().setSeleccionado(cuotaPorAnio.isSeleccionado());
        cuotaPorAnio.getCuotaAgosto().setSeleccionado(cuotaPorAnio.isSeleccionado());
        cuotaPorAnio.getCuotaSetiembre().setSeleccionado(cuotaPorAnio.isSeleccionado());
        cuotaPorAnio.getCuotaOctubre().setSeleccionado(cuotaPorAnio.isSeleccionado());
        cuotaPorAnio.getCuotaNoviembre().setSeleccionado(cuotaPorAnio.isSeleccionado());
        cuotaPorAnio.getCuotaDiciembre().setSeleccionado(cuotaPorAnio.isSeleccionado());
        return null;
    }

    public String seleccionarTodoEvento() {
        for (DetPagoAgrupado detPagoAgrupado : getDeudaPorCuentaIngresoEvento()) {
            detPagoAgrupado.setSeleccionado(isSeleccionadoEventos());
        }
        return null;
    }

    public String seleccionarTodoMultas() {
        for (DetPagoAgrupado detPagoAgrupado : getDeudaPorCuentaIngresoMulta()) {
            detPagoAgrupado.setSeleccionado(isSeleccionadoMultas());
        }
        return null;
    }

    public String seleccionarTodoFraccionamiento() {
        for (DetPagoAgrupado detPagoAgrupado : getDeudaPorCuentaIngresoFraccionamiento()) {
            detPagoAgrupado.setSeleccionado(isSeleccionadoFraccionamiento());
        }
        return null;
    }

    public String seleccionarTodoOtros() {
        for (DetPagoAgrupado detPagoAgrupado : getDeudaPorCuentaIngresoOtros()) {
            detPagoAgrupado.setSeleccionado(isSeleccionadoOtros());
        }
        return null;
    }

    public String seleccionarTodoColegiatura() {
        for (DetPagoAgrupado detPagoAgrupado : getDeudaPorCuentaIngresoColegiatura()) {
            detPagoAgrupado.setSeleccionado(isSeleccionadoColegiatura());
        }
        return null;
    }

    public String seleccionarTodoBene() {
        cuotaPorAnioBene.getCuotaEnero().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        cuotaPorAnioBene.getCuotaFebrero().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        cuotaPorAnioBene.getCuotaMarzo().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        cuotaPorAnioBene.getCuotaAbril().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        cuotaPorAnioBene.getCuotaMayo().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        cuotaPorAnioBene.getCuotaJunio().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        cuotaPorAnioBene.getCuotaJulio().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        cuotaPorAnioBene.getCuotaAgosto().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        cuotaPorAnioBene.getCuotaSetiembre().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        cuotaPorAnioBene.getCuotaOctubre().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        cuotaPorAnioBene.getCuotaNoviembre().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        cuotaPorAnioBene.getCuotaDiciembre().setSeleccionado(cuotaPorAnioBene.isSeleccionado());
        return null;
    }

    public String seleccionarTodoEventoBen() {
        for (DetPagoAgrupado detPagoAgrupado : getDeudaPorCuentaIngresoEventoBene()) {
            detPagoAgrupado.setSeleccionado(isSeleccionadoEventosBen());
        }
        return null;
    }

    public String seleccionarTodoMultasBen() {
        for (DetPagoAgrupado detPagoAgrupado : getDeudaPorCuentaIngresoMultaBene()) {
            detPagoAgrupado.setSeleccionado(isSeleccionadoMultasBen());
        }
        return null;
    }

    public String seleccionarTodoFraccionamientoBen() {
        for (DetPagoAgrupado detPagoAgrupado : getDeudaPorCuentaIngresoFraccionamientoBene()) {
            detPagoAgrupado.setSeleccionado(isSeleccionadoFraccionamientoBen());
        }
        return null;
    }

    public String seleccionarTodoOtrosBen() {
        for (DetPagoAgrupado detPagoAgrupado : getDeudaPorCuentaIngresoOtrosBene()) {
            detPagoAgrupado.setSeleccionado(isSeleccionadoOtrosBen());
        }
        return null;
    }

    public String seleccionarTodoColegiaturaBen() {
        for (DetPagoAgrupado detPagoAgrupado : getDeudaPorCuentaIngresoColegiaturaBene()) {
            detPagoAgrupado.setSeleccionado(isSeleccionadoColegiaturaBen());
        }
        return null;
    }

    public SelectItem[] getEstadosDocumentoPagoItems() {
        return delegado.getRealizarPago().getEstadosDocuemntoPagoItems();
    }

    public synchronized String grabar() {
        boolean esFactura = false;
        esFactura = delegado.getRealizarPago().getDocumentoPago().getFkTdoCodigo().getTdoDesc().toLowerCase().equals("factura");
        String tieneRUC = delegado.getRealizarPago().getSolicitanteSeleccionado().getSolRUC();
        if (esFactura == true && tieneRUC == null) {
            ControladorAbstracto.warn("Sólo se puede emitir FACTURA a la persona o empresa que tenga RUC");
            return null;
        } else {
            delegado.getRealizarPago().guardarPago();
            if(delegado.getRealizarPago().getDocumentoPago().getEstado().equals(EnumEstadoDocumentoPago.PAGADO)){
                ControladorAbstracto.setSessionProperty("reporte", delegado.getRealizarPago().getDocumentoPago().getDocCodigo());
            }
            delegado.getRealizarPago().cancelar();
            return "buscar";
        }
    }   

    public String cancelar() {
        delegado.getRealizarPago().cancelar();
        return "buscar";
    }

    public String getFijarSerie() {
        return delegado.getRealizarPago().getFijarSerie();
    }

    public String buscarPersona() {
        delegado.getRealizarPago().buscarPersona(dnioNroCip);
        return null;
    }

    public String buscarPersonaBeneficiaria() {
        delegado.getRealizarPago().buscarBeneficiario(dnioNroCipBene);
        return null;
    }

    public String busquedaAvanzada() {
        BusquedaPersonasController bpcCB = (BusquedaPersonasController) getBean("busquedaPersonasController");
        bpcCB.setControladorSolicitante(1);
        bpcCB.setDniPerNat(null);
        bpcCB.setApeMatPerNat(null);
        bpcCB.setApePatPerNat(null);
        bpcCB.setDniPerNat(null);
        bpcCB.setNomPerNat(null);
        bpcCB.setRazsocPerJur(null);
        bpcCB.setRucCliente(null);
        bpcCB.setTipoPersonaSeleccionada("NA");
        return "busquedaAvanzada";
    }

    public String busquedaAvanzadaDeudaBene() {
        BusquedaPersonasController bpcCB = (BusquedaPersonasController) getBean("busquedaPersonasController");
        bpcCB.setControladorSolicitante(6);
        bpcCB.setApeMatPerNat(null);
        bpcCB.setApePatPerNat(null);
        bpcCB.setDniPerNat(null);
        bpcCB.setNomPerNat(null);
        bpcCB.setRazsocPerJur(null);
        bpcCB.setRucCliente(null);
        bpcCB.setTipoPersonaSeleccionada("NA");
        return "busquedaAvanzada_desde_DeudaCuoBene";
    }

    public void cambioMoneda(ValueChangeEvent event) {
        delegado.getRealizarPago().setAlterarDeudaTotal(true);
    }

    public String mostrarDeuda() {
        delegado.getRealizarPago().setAlterarDeudaTotal(true);
        return "verDeuda";
    }

    public boolean getSeleccionarCuotas() {
        return delegado.getRealizarPago().seleccionarCuotas();
    }

    public boolean getSeleccionarCuotasBene() {
        return delegado.getRealizarPago().seleccionarCuotasBeneficiario();
    }

    public String quitarBeneficiario() {
        int cont = 0;
        for (BeneficiarioPagocolegiatura bene : delegado.getRealizarPago().getListaBeneficiarios()) {
            if (bene.getPersonaNatural().equals(delegado.getRealizarPago().getBeneficiarioSeleccionado().getPersonaNatural())) {
                delegado.getRealizarPago().getListaBeneficiarios().remove(cont);
                delegado.getRealizarPago().setBeneficiarioSeleccionado(null);
                delegado.getRealizarPago().setAlterarDeudaTotal(true);
                break;
            }
            cont++;
        }
        return null;
    }

    public String seleccionarCuotasAPagar() {
        delegado.getRealizarPago().setAlterarDeudaTotal(true);
        String mensaje = delegado.getRealizarPago().mostraDeudaPorCuentaIngreso();
        if (mensaje.equals("Bien")) {
            delegado.getRealizarPago().setAlterarDeudaTotal(true);
            return "nuevo";
        } else {
            return null;
        }
    }

    public String seleccionarBeneficiario() {
        delegado.getRealizarPago().setAlterarDeudaTotal(true);
        delegado.getRealizarPago().seleccionarBeneficiario();
        delegado.getRealizarPago().mostraDeudaPorCuentaIngreso();
        delegado.getRealizarPago().setAlterarDeudaTotal(true);
        return "nuevo";
    }

    public String agregarBeneficiario() {
        delegado.getRealizarPago().setBeneficiarioSeleccionado(new BeneficiarioPagocolegiatura());
        return "beneficiario";
    }

    public boolean getEsAcotacion() {
        try {
            if (delegado.getRealizarPago().getMovimientoCuenta().getFkCinCodigo().getGlosa().toLowerCase().indexOf("acotac") >= 0) {
                return true;
            } else {
                return false;
            }
        } catch (Exception e) {
            return false;
        }
    }

    public boolean getVacioListaBeneficiarios() {
        if (delegado.getRealizarPago().getListaBeneficiarios().size() > 0) {
            return true;
        } else {
            return false;
        }
    }

    public List getListaBeneficiarios() {
        return delegado.getRealizarPago().getListaBeneficiarios();
    }

    public List<CuotasPorAnio> getDeudaCuotasPorAnio() {
        return delegado.getRealizarPago().mostrarDeudaCuotas();
    }

    public Double getDeudaTotal() {
        return delegado.getRealizarPago().getDeudaTotal();
    }

    public boolean getVacioDeudaPorCuentaIngreso() {
        if (delegado.getRealizarPago().isAlterarDeudaTotal() == true) {
            delegado.getRealizarPago().mostraDeudaPorCuentaIngreso();
            if (delegado.getRealizarPago().getDeudaCuentaIngreso() != null) {
                delegado.getRealizarPago().getDeudaCuentaIngreso().setIgvUtilizar(igvFacadeLocal.igvVigente().getIgvValor());
                delegado.getRealizarPago().setListaPagosARealizar(delegado.getRealizarPago().getDeudaCuentaIngreso().getListaDeudaxIngresoEnMonedaSeleccionada());
                if (delegado.getRealizarPago().getListaPagosARealizar().size() > 0) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        } else {
            if (delegado.getRealizarPago().getListaPagosARealizar() != null) {
                if (delegado.getRealizarPago().getListaPagosARealizar().size() > 0) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }
    }

    public String nuevoMovimientoCuenta() {
        nombreCuentaIngreso = null;
        delegado.getRealizarPago().nuevoMovimientoCuenta();
        delegado.getRealizarPago().setHabilitadoFijarMonto(true);

        return null;
    }

    public String grabarMovimientoCuenta() {
        delegado.getRealizarPago().grabarMovimientoCuenta();
        return null;
    }

    //metodo para obtener direccion de solicitante-Ingrid
    public String getObtenerDireccion() {
        DireccionPersona dir = direccionPersonaFacadeLocal.buscaDireccionColegiado(delegado.getRealizarPago().getSolicitanteSeleccionado().getSolCodigo());
        if (dir != null) {
            return dir.getDireccion();
        } else {
            return "";
        }
    }

    public Double getTotalPagar() {
        return delegado.getRealizarPago().getTotalPagar();
    }

    public void fijarValorMontoMovimiento(EventListener event) {
        try {
            String codigo = delegado.getRealizarPago().getMovimientoCuenta().getFkCinCodigo().getCinCodigo();
            Double monto = delegadoValorCuenta.valorCuentaActual(codigo).getVcuValor();
            delegado.getRealizarPago().getMovimientoCuenta().setMcuMonto(monto);
        } catch (Exception e) {
            delegado.getRealizarPago().getMovimientoCuenta().setMcuMonto(null);
        }
    }

    /**
     * @return the seleccionadoEventos
     */
    public boolean isSeleccionadoEventos() {
        return delegado.getRealizarPago().isSeleccionadoEventos();
    }

    /**
     * @param seleccionadoEventos the seleccionadoEventos to set
     */
    public void setSeleccionadoEventos(boolean seleccionadoEventos) {
        delegado.getRealizarPago().setSeleccionadoEventos(seleccionadoEventos);
    }

    /**
     * @return the seleccionadoMultas
     */
    public boolean isSeleccionadoMultas() {
        return delegado.getRealizarPago().isSeleccionadoMultas();
    }

    /**
     * @param seleccionadoMultas the seleccionadoMultas to set
     */
    public void setSeleccionadoMultas(boolean seleccionadoMultas) {
        delegado.getRealizarPago().setSeleccionadoMultas(seleccionadoMultas);
    }

    /**
     * @return the seleccionadoFraccionamiento
     */
    public boolean isSeleccionadoFraccionamiento() {
        return delegado.getRealizarPago().isSeleccionadoFraccionamiento();
    }

    /**
     * @param seleccionadoFraccionamiento the seleccionadoFraccionamiento to set
     */
    public void setSeleccionadoFraccionamiento(boolean seleccionadoFraccionamiento) {
        delegado.getRealizarPago().setSeleccionadoFraccionamiento(seleccionadoFraccionamiento);
    }

    /**
     * @return the seleccionadoOtros
     */
    public boolean isSeleccionadoOtros() {
        return delegado.getRealizarPago().isSeleccionadoOtros();
    }

    /**
     * @param seleccionadoOtros the seleccionadoOtros to set
     */
    public void setSeleccionadoOtros(boolean seleccionadoOtros) {
        delegado.getRealizarPago().setSeleccionadoOtros(seleccionadoOtros);
    }

    /**
     * @return the seleccionadoColegiatura
     */
    public boolean isSeleccionadoColegiatura() {
        return delegado.getRealizarPago().isSeleccionadoColegiatura();
    }

    /**
     * @param seleccionadoColegiatura the seleccionadoColegiatura to set
     */
    public void setSeleccionadoColegiatura(boolean seleccionadoColegiatura) {
        delegado.getRealizarPago().setSeleccionadoColegiatura(seleccionadoColegiatura);
    }

    //****************************
    /**
     * @return the seleccionadoEventos
     */
    public boolean isSeleccionadoEventosBen() {
        return delegado.getRealizarPago().isSeleccionadoEventosBen();
    }

    /**
     * @param seleccionadoEventos the seleccionadoEventos to set
     */
    public void setSeleccionadoEventosBen(boolean seleccionadoEventosBen) {
        delegado.getRealizarPago().setSeleccionadoEventosBen(seleccionadoEventosBen);
    }

    /**
     * @return the seleccionadoMultas
     */
    public boolean isSeleccionadoMultasBen() {
        return delegado.getRealizarPago().isSeleccionadoMultasBen();
    }

    /**
     * @param seleccionadoMultas the seleccionadoMultas to set
     */
    public void setSeleccionadoMultasBen(boolean seleccionadoMultasBen) {
        delegado.getRealizarPago().setSeleccionadoMultasBen(seleccionadoMultasBen);
    }

    /**
     * @return the seleccionadoFraccionamiento
     */
    public boolean isSeleccionadoFraccionamientoBen() {
        return delegado.getRealizarPago().isSeleccionadoFraccionamientoBen();
    }

    /**
     * @param seleccionadoFraccionamiento the seleccionadoFraccionamiento to set
     */
    public void setSeleccionadoFraccionamientoBen(boolean seleccionadoFraccionamientoBen) {
        delegado.getRealizarPago().setSeleccionadoFraccionamientoBen(seleccionadoFraccionamientoBen);
    }

    /**
     * @return the seleccionadoOtros
     */
    public boolean isSeleccionadoOtrosBen() {
        return delegado.getRealizarPago().isSeleccionadoOtrosBen();
    }

    /**
     * @param seleccionadoOtros the seleccionadoOtros to set
     */
    public void setSeleccionadoOtrosBen(boolean seleccionadoOtrosBen) {
        delegado.getRealizarPago().setSeleccionadoOtrosBen(seleccionadoOtrosBen);
    }

    /**
     * @return the seleccionadoColegiatura
     */
    public boolean isSeleccionadoColegiaturaBen() {
        return delegado.getRealizarPago().isSeleccionadoColegiaturaBen();
    }

    /**
     * @param seleccionadoColegiatura the seleccionadoColegiatura to set
     */
    public void setSeleccionadoColegiaturaBen(boolean seleccionadoColegiaturaBen) {
        delegado.getRealizarPago().setSeleccionadoColegiaturaBen(seleccionadoColegiaturaBen);
    }

    public List<DetPagoAgrupado> getDeudaPorCuentaIngreso() {
        return delegado.getRealizarPago().getListaPagosARealizar();
    }

    public List<DetPagoAgrupado> getDeudaPorCuentaIngresoEvento() {
        return delegado.getRealizarPago().mostrarDeudaEventos();
    }

    public List<DetPagoAgrupado> getDeudaPorCuentaIngresoMulta() {
        return delegado.getRealizarPago().mostrarDeudaMulta();
    }

    public List<DetPagoAgrupado> getDeudaPorCuentaIngresoOtros() {
        return delegado.getRealizarPago().mostrarDeudaOtros();
    }

    public List<DetPagoAgrupado> getDeudaPorCuentaIngresoFraccionamiento() {
        return delegado.getRealizarPago().mostrarDeudaFraccioanamiento();
    }

    public List<DetPagoAgrupado> getDeudaPorCuentaIngresoColegiatura() {
        return delegado.getRealizarPago().mostrarDeudaColegiatura();
    }

    public Double getTotalDeudaEventos() {
        return delegado.getRealizarPago().totalDeudaEventos();
    }

    public Double getTotalDeudaMulta() {
        return delegado.getRealizarPago().totalDeudaMulta();
    }

    public Double getTotalDeudaOtros() {
        return delegado.getRealizarPago().totalDeudaOtros();
    }

    public Double getTotalDeudaFraccioanamiento() {
        return delegado.getRealizarPago().totalDeudaFraccionamiento();
    }

    public Double getTotalDeudaColegiatura() {
        return delegado.getRealizarPago().totalDeudaColegiatura();
    }
//para beneficiarios

    public List<CuotasPorAnio> getDeudaCuotasPorAnioBene() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado().getDeudaAnual().getListaCuotasPorAnio();
    }

    public List<DetPagoAgrupado> getDeudaPorCuentaIngresoEventoBene() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado().getDeudaCuentaIngresoEvento().getListaDeudaxIngreso();
    }

    public List<DetPagoAgrupado> getDeudaPorCuentaIngresoMultaBene() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado().getDeudaCuentaIngresoMulta().getListaDeudaxIngreso();
    }

    public List<DetPagoAgrupado> getDeudaPorCuentaIngresoOtrosBene() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado().getDeudaCuentaIngresoOtros().getListaDeudaxIngreso();
    }

    public List<DetPagoAgrupado> getDeudaPorCuentaIngresoFraccionamientoBene() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado().getDeudaCuentaIngresoFraccionamiento().getListaDeudaxIngreso();
    }

    public List<DetPagoAgrupado> getDeudaPorCuentaIngresoColegiaturaBene() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado().getDeudaCuentaIngresoColegiatura().getListaDeudaxIngreso();
    }

    public Double getTotalDeudaEventosBe() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado().getDeudaCuentaIngresoEvento().totalDeudaMovimientos();
    }

    public Double getTotalDeudaMultaBe() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado().getDeudaCuentaIngresoMulta().totalDeudaMovimientos();
    }

    public Double getTotalDeudaOtrosBe() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado().getDeudaCuentaIngresoOtros().totalDeudaMovimientos();
    }

    public Double getTotalDeudaFraccioanamientoBe() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado().getDeudaCuentaIngresoFraccionamiento().totalDeudaMovimientos();
    }

    public Double getTotalDeudaColegiaturaBe() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado().getDeudaCuentaIngresoColegiatura().totalDeudaMovimientos();
    }

    public void escucha(ValueChangeEvent event) {
        TipoDocumento td = (TipoDocumento) event.getNewValue();
        Object[] o = serieDocPagoFacadeLocal.obtenerSerieActual(td);
        if (o[0].equals("000")) {
            ControladorAbstracto.warn("No existe numeración para el tipo " + td.getTdoDesc() + ".Creela por favor.");
        }
        delegado.getRealizarPago().setAlterarDeudaTotal(true);
    }

    public String getObtenerCodigoReporte() {
        try{
            String codigoDocPago = ControladorAbstracto.getSessionProperty("reporte").toString();
            ControladorAbstracto.removeSessionProperty("reporte");
            return codigoDocPago;
        }catch(Exception e){
            return "0";
        }
    }

    public void setObtenerCodigoReporte(String ob) {        
    }
    
    public DocumentoPago getDocumentoPago() {
        return delegado.getRealizarPago().getDocumentoPago();
    }

    public Solicitante getSolicitanteSeleccionado() {
        return delegado.getRealizarPago().getSolicitanteSeleccionado();
    }

    public void setSolicitanteSeleccionado(Solicitante solicitante) {
        delegado.getRealizarPago().setSolicitanteSeleccionado(solicitante);
    }

    //agregado x ingrid para editar personas o empresas---SolicitanteSeleccionado=personaSeleccionada
    public PersonaNatural getPersonaSeleccionada() {
        PersonaNatural pn = delegado.getRealizarPago().getPersonaSeleccionada();
        return pn;
    }

    public void setPersonaSeleccionada(PersonaNatural personaSeleccionada) {
        delegado.getRealizarPago().setPersonaSeleccionada(personaSeleccionada);
    }

    public PersonaJuridica getEmpresaSeleccionada() {
        return delegado.getRealizarPago().getEmpresaSeleccionada();
    }

    public void setEmpresaSeleccionada(PersonaJuridica empresaSeleccionada) {
        delegado.getRealizarPago().setEmpresaSeleccionada(empresaSeleccionada);
    }
    //fin d agregado

    public BeneficiarioPagocolegiatura getBeneficiarioSeleccionado() {
        return delegado.getRealizarPago().getBeneficiarioSeleccionado();
    }

    public void setBeneficiarioSeleccionado(BeneficiarioPagocolegiatura solicitante) {
        delegado.getRealizarPago().setBeneficiarioSeleccionado(solicitante);
    }

    public VerDeuda getVerDeuda() {
        return delegado.getRealizarPago().getVerDeuda();
    }

    public int getTipoBusquedaDNICIP() {
        return delegado.getRealizarPago().getTipoBusquedaDNICIP();
    }

    public void setTipoBusquedaDNICIP(int num) {
        delegado.getRealizarPago().setTipoBusquedaDNICIP(num);
    }

    public int getTipoBusquedaDNICIPBeneficiario() {
        return delegado.getRealizarPago().getTipoBusquedaDNICIPBene();
    }

    public void setTipoBusquedaDNICIPBeneficiario(int num) {
        delegado.getRealizarPago().setTipoBusquedaDNICIPBene(num);
    }

    /**
     * @return the dnioNroCip
     */
    public String getDnioNroCip() {
        return dnioNroCip;
    }

    /**
     * @param dnioNroCip the dnioNroCip to set
     */
    public void setDnioNroCip(String dnioNroCip) {
        this.dnioNroCip = dnioNroCip;
    }

    /**
     * @return the listaDeuda
     */
    public boolean getVacioListaDeuda() {
        if (delegado.getRealizarPago().getListaDeuda().size() > 0) {
            return true;
        } else {
            return false;
        }
    }

    public List<VerDeuda> getListaDeuda() {
        return delegado.getRealizarPago().getListaDeuda();
    }

    /**
     * @param listaDeuda the listaDeuda to set
     */
    public void setListaDeuda(List<VerDeuda> listaDeuda) {
        delegado.getRealizarPago().setListaDeuda(listaDeuda);
    }

    /**
     * @return the dnioNroCipBene
     */
    public String getDnioNroCipBene() {
        return dnioNroCipBene;
    }

    /**
     * @param dnioNroCipBene the dnioNroCipBene to set
     */
    public void setDnioNroCipBene(String dnioNroCipBene) {
        this.dnioNroCipBene = dnioNroCipBene;
    }

    /**
     * @return the nombreCuentaIngreso
     */
    public String getNombreCuentaIngreso() {
        return nombreCuentaIngreso;
    }

    /**
     * @param nombreCuentaIngreso the nombreCuentaIngreso to set
     */
    public void setNombreCuentaIngreso(String nombreCuentaIngreso) {
        this.nombreCuentaIngreso = nombreCuentaIngreso;
    }

    /**
     * @return the movimientoCuenta
     */
    public MovimientoCuenta getMovimientoCuenta() {
        return delegado.getRealizarPago().getMovimientoCuenta();
    }

    /**
     * @param movimientoCuenta the movimientoCuenta to set
     */
    public void setMovimientoCuenta(MovimientoCuenta movimientoCuenta) {
        delegado.getRealizarPago().setMovimientoCuenta(movimientoCuenta);
    }

    /**
     * @return the habilitadoFijarMonto
     */
    public boolean isHabilitadoFijarMonto() {
        return delegado.getRealizarPago().isHabilitadoFijarMonto();
    }

    /**
     * @param habilitadoFijarMonto the habilitadoFijarMonto to set
     */
    public void setHabilitadoFijarMonto(boolean habilitadoFijarMonto) {
        delegado.getRealizarPago().setHabilitadoFijarMonto(habilitadoFijarMonto);
    }

    /**
     * @return the cantidadPagosVarios
     */
    public int getCantidadPagosVarios() {
        return delegado.getRealizarPago().getCantidadPagosVarios();
    }

    /**
     * @param cantidadPagosVarios the cantidadPagosVarios to set
     */
    public void setCantidadPagosVarios(int cantidadPagosVarios) {
        delegado.getRealizarPago().setCantidadPagosVarios(cantidadPagosVarios);
    }

    /**
     * @return the alterarDeudaTotal
     */
    public boolean isAlterarDeudaTotal() {
        return delegado.getRealizarPago().isAlterarDeudaTotal();
    }

    /**
     * @param alterarDeudaTotal the alterarDeudaTotal to set
     */
    public void setAlterarDeudaTotal(boolean alterarDeudaTotal) {
        delegado.getRealizarPago().setAlterarDeudaTotal(alterarDeudaTotal);
    }

    /**
     * @return the cuotaPorAnio
     */
    public CuotasPorAnio getCuotaPorAnio() {
        return cuotaPorAnio;
    }

    /**
     * @param cuotaPorAnio the cuotaPorAnio to set
     */
    public void setCuotaPorAnio(CuotasPorAnio cuotaPorAnio) {
        this.cuotaPorAnio = cuotaPorAnio;
    }

    /**
     * @return the colegiadoTemporal
     */
    public Colegiado getColegiadoTemporal() {
        Colegiado col = delegado.getRealizarPago().getColegiadoTemporal();
        return col;
    }

    /**
     * @param colegiadoTemporal the colegiadoTemporal to set
     */
    public void setColegiadoTemporal(Colegiado colegiadoTemporal) {
        delegado.getRealizarPago().setColegiadoTemporal(colegiadoTemporal);
    }

    //agregado x ingrid para editar los datos de una persona o empresa
    public String editarPersonaEmpresa() {
        PersonaJuridicaController pjc = (PersonaJuridicaController) ControladorAbstracto.getBean("personaJuridicaController");
        if (getSolicitanteSeleccionado() != null) {
            if (getSolicitanteSeleccionado().getListaDirecciones().get(0) != null) {
                if (getSolicitanteSeleccionado().getListaDirecciones().get(0).getDisCodigo() != null) {
                    pjc.setDistrito(getSolicitanteSeleccionado().getListaDirecciones().get(0).getDisCodigo());
                    pjc.setProvincia(getSolicitanteSeleccionado().getListaDirecciones().get(0).getDisCodigo().getProCodigo());
                    pjc.setDepartamento(getSolicitanteSeleccionado().getListaDirecciones().get(0).getDisCodigo().getProCodigo().getDepCodigo());
                }
                if (getSolicitanteSeleccionado().getListaDirecciones().get(0).getZonaCodigo() != null) {
                    pjc.setTipoZona(getSolicitanteSeleccionado().getListaDirecciones().get(0).getZonaCodigo());
                }
                pjc.setNombreZona(getSolicitanteSeleccionado().getListaDirecciones().get(0).getDpenombreZona());
                pjc.setDireccion(getSolicitanteSeleccionado().getListaDirecciones().get(0).getDpeDireccion());

                direccionPersonaEmpresa = new DireccionPersona();
            }
        }
        return null;
    }

    /**
     * @return the departamentoPE
     */
    public Departamento getDepartamentoPE() {
        return departamentoPE;
    }

    /**
     * @param departamentoPE the departamentoPE to set
     */
    public void setDepartamentoPE(Departamento departamentoPE) {
        this.departamentoPE = departamentoPE;
    }

    /**
     * @return the provinciaPE
     */
    public Provincia getProvinciaPE() {
        return provinciaPE;
    }

    /**
     * @param provinciaPE the provinciaPE to set
     */
    public void setProvinciaPE(Provincia provinciaPE) {
        this.provinciaPE = provinciaPE;
    }

    /**
     * @return the distritoPE
     */
    public Distrito getDistritoPE() {
        return distritoPE;
    }

    /**
     * @param distritoPE the distritoPE to set
     */
    public void setDistritoPE(Distrito distritoPE) {
        this.distritoPE = distritoPE;
    }

    /**
     * @return the tipoZonaPE
     */
    public TipoZona getTipoZonaPE() {
        return tipoZonaPE;
    }

    /**
     * @param tipoZonaPE the tipoZonaPE to set
     */
    public void setTipoZonaPE(TipoZona tipoZonaPE) {
        this.tipoZonaPE = tipoZonaPE;
    }

    /**
     * @return the nombreZonaPE
     */
    public String getNombreZonaPE() {
        return nombreZonaPE;
    }

    /**
     * @param nombreZonaPE the nombreZonaPE to set
     */
    public void setNombreZonaPE(String nombreZonaPE) {
        this.nombreZonaPE = nombreZonaPE;
    }

    /**
     * @return the direccionPE
     */
    public String getDireccionPE() {
        return direccionPE;
    }

    /**
     * @param direccionPE the direccionPE to set
     */
    public void setDireccionPE(String direccionPE) {
        this.direccionPE = direccionPE;
    }

    /**
     * @return the direccionPersonaEmpresa
     */
    public DireccionPersona getDireccionPersonaEmpresa() {
        return direccionPersonaEmpresa;
    }

    /**
     * @param direccionPersonaEmpresa the direccionPersonaEmpresa to set
     */
    public void setDireccionPersonaEmpresa(DireccionPersona direccionPersonaEmpresa) {
        this.direccionPersonaEmpresa = direccionPersonaEmpresa;
    }

    /**
     * @return the cuotaPorAnioBene
     */
    public CuotasPorAnio getCuotaPorAnioBene() {
        return cuotaPorAnioBene;
    }

    /**
     * @param cuotaPorAnioBene the cuotaPorAnioBene to set
     */
    public void setCuotaPorAnioBene(CuotasPorAnio cuotaPorAnioBene) {
        this.cuotaPorAnioBene = cuotaPorAnioBene;
    }

    /**
     * @return the seleccionado
     */
    public boolean isSeleccionado() {
        return seleccionado;
    }

    /**
     * @param seleccionado the seleccionado to set
     */
    public void setSeleccionado(boolean seleccionado) {
        this.seleccionado = seleccionado;
    }
    //fin de codigo agregado
}
